package com.shanzhe.eshop.inventory.service;

import com.shanzhe.eshop.order.pojo.OrderDTO;
import com.shanzhe.eshop.wms.pojo.PurchaseInputOrderDTO;
import com.shanzhe.eshop.wms.pojo.ReturnGoodsInputDTO;

/**
 * @Author yinwei
 * @create 2021/9/26
 * @Version 1.0
 * @desc 库存中心对外提供接口
 */
public interface InventoryFacadeService {

    /**
     * 通知库存中心采购入库单事件发生了
     * @param purchaseInputOrderDTO 采购入库单实体
     * @return Boolean 处理结果
     */
    Boolean informPurchaseInputFinishedEvent(PurchaseInputOrderDTO purchaseInputOrderDTO);

    /**
     * 通知库存中心提交订单事件发生了
     * @param orderDTO 订单实体
     * @return Boolean 处理结果
     */
    Boolean informSubmitOrderEvent(OrderDTO orderDTO);

    /**
     * 通知库存中心支付订单事件发生了
     * @param orderDTO 订单实体
     * @return Boolean 处理结果
     */
    Boolean informPayOrderEvent(OrderDTO orderDTO);

    /**
     * 通知库存中心取消订单事件发生了
     * @param orderDTO 订单实体
     * @return Boolean 处理结果
     */
    Boolean informCancelOrderEvent(OrderDTO orderDTO);

    /**
     * 通知库存中心完成退货入库事件发生了
     * @param returnGoodsInputDTO 退货入库单实体
     * @return Boolean 处理结果
     */
    Boolean informReturnGoodsInputFinished(ReturnGoodsInputDTO returnGoodsInputDTO);

    /**
     * 查询商品sku的库存
     * @param goodsSkuId 商品sku id
     * @return Long 商品库存
     */
    Long getSaleStockQuantity(Long goodsSkuId);
}
